﻿using System.Collections.Generic;

namespace dPet.Application.Services
{
	using dPet.Application.DataObjects;
	using dPet.Infrastructure.Logging;

	public interface IServingService
	{
		#region ServiceOrder

		/// <summary>
		/// 创建服务订单
		/// </summary>
		MessagedResult<ServiceOrderDto> CreateServiceOrder(string hospitalId, MembershipLevelDto membershipLevelDto, ShoppingCartItemDto[] items, IOperator @operator);

		/// <summary>
		/// 获取服务订单列表
		/// </summary>
		IEnumerable<ServiceOrderDto> GetServiceOrders(string hospitalId, ServiceOrderDto queryDto, 
			int pageIndex, int pageSize, out int totalNumber);

		/// <summary>
		/// 获取服务订单
		/// </summary>
		ServiceOrderDto GetServiceOrder(string orderId);

		/// <summary>
		/// 根据订单状态获取服务订单
		/// </summary>
		ServiceOrderDto GetServiceOrder(string orderId, OrderStatusDto statusDto);

		/// <summary>
		/// 支付服务订单
		/// </summary>
		MessagedResult<bool> PayServiceOrder(string orderId, PaymentMethodDto paymentMethodDto, IOperator @operator);

		/// <summary>
		/// 取消服务订单
		/// </summary>
		MessagedResult<bool> CancelServiceOrder(string orderId, IOperator @operator);

		#endregion
	}
}
